/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package catalogos;

import java.util.List;
import javax.faces.model.SelectItem;
import conexionBD.ConexionServidor;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author olvarey
 */
public class ExtraccionCatalogos implements Serializable {

    public ExtraccionCatalogos() {
    }
    //Extraccion de catalogo de tipo de propiedad

    public List<SelectItem> getListaTipoPropiedad() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> tipoPropiedad = new ArrayList<SelectItem>();
        tipoPropiedad.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from propiedad");
            while (rs.next()) {
                tipoPropiedad.add(new SelectItem(rs.getInt("idpropiedad"), rs.getString("nombrepropiedad")));
            }
            rs.close();
            st.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return tipoPropiedad;
    }
    //Extraccion de catalogo de deptos

    public List<SelectItem> getListaDeptos() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> departamentos = new ArrayList<SelectItem>();
        departamentos.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from departamento");
            while (rs.next()) {
                departamentos.add(new SelectItem(rs.getInt("iddepartamento"), rs.getString("nombredepartamento")));
            }
            rs.close();
            st.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return departamentos;
    }
    //Extraccion de catalogo de lista de Municipios segun depto seleccionado

    public List<SelectItem> getListaMunicipiosFiltrados(int departamentoSeleccionado) {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> municipios = new ArrayList<SelectItem>();
        municipios.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from municipio where iddepartamento = ?");
            ps.setInt(1, departamentoSeleccionado);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                municipios.add(new SelectItem(rs.getInt("idmunicipio"), rs.getString("nombremunicipio")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return municipios;
    }
//Extraccion de catalogo de lista de tipos de intervencion

    public List<SelectItem> getListaTiposIntervencion() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> tiposIntervencion = new ArrayList<SelectItem>();
        tiposIntervencion.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from intervencion");
//          Lineas utilizadas cuando se mandan parametros
//          PreparedStatement ps = con.prepareStatement("select * from municipio where iddepartamento = ?");
//          ps.setInt(1, 14);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                tiposIntervencion.add(new SelectItem(rs.getInt("idintervencion"), rs.getString("tipointervencion")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return tiposIntervencion;
    }
//Extraccion de catalogo de lista de usos suelo

    public List<SelectItem> getListaUsoSuelo() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaUsoSuelo = new ArrayList<SelectItem>();
        listaUsoSuelo.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from uso_suelo");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaUsoSuelo.add(new SelectItem(rs.getInt("iduso_suelo"), rs.getString("nombreuso")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaUsoSuelo;
    }
//Extraccion de catalogo de lista profesiones

    public List<SelectItem> getListaProfesiones() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaProfesiones = new ArrayList<SelectItem>();
        listaProfesiones.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from profesion");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaProfesiones.add(new SelectItem(rs.getInt("idprofesion"), rs.getString("nombreprofesion")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaProfesiones;
    }
//Extraccion de catalogo de lista de tipos de transporte

    public List<SelectItem> getListaTransporte() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaTransporte = new ArrayList<SelectItem>();
        listaTransporte.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from transporte");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaTransporte.add(new SelectItem(rs.getInt("idtransporte"), rs.getString("tipotransporte")));
            }
            rs.close();
            ps.close();
            con.close();

        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaTransporte;
    }
//Extraccion de catalogo de lista de categorias

    public List<SelectItem> getListaCategoria() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaProfesiones = new ArrayList<SelectItem>();
        listaProfesiones.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from categoria where idcategoria like '010%'");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaProfesiones.add(new SelectItem(rs.getString("idcategoria"), rs.getString("categoria")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaProfesiones;
    }
//Extraccion de catalogo de lista de subcategorias

    public List<SelectItem> getListaSubCategoria() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaProfesiones = new ArrayList<SelectItem>();
        listaProfesiones.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from categoria where idcategoria like '020%'");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaProfesiones.add(new SelectItem(rs.getString("idcategoria"), rs.getString("categoria")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaProfesiones;
    }
//Extraccion de catalogo de lista de proteccion

    public List<SelectItem> getListaProteccion() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaProteccion = new ArrayList<SelectItem>();
        listaProteccion.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from proteccion");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaProteccion.add(new SelectItem(rs.getInt("idproteccion"), rs.getString("proteccion")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaProteccion;
    }
//Extraccion de catalogo de lista de tipos de parcela

    public List<SelectItem> getListaParcela() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaParcela = new ArrayList<SelectItem>();
        listaParcela.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from parcela");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaParcela.add(new SelectItem(rs.getInt("idparcela"), rs.getString("parcela")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaParcela;
    }
//Extraccion de catalogo de lista de tipos de linea

    public List<SelectItem> getListaLinea() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaLinea = new ArrayList<SelectItem>();
        listaLinea.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from linea");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaLinea.add(new SelectItem(rs.getInt("idlinea"), rs.getString("linea")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaLinea;
    }
//Extraccion de catalogo de lista de tipos de construccion

    public List<SelectItem> getListaConstruccion() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaConstruccion = new ArrayList<SelectItem>();
        listaConstruccion.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from construccion");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaConstruccion.add(new SelectItem(rs.getInt("idconstruccion"), rs.getString("construccion")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaConstruccion;
    }
//Extraccion de catalogo de lista de tipos fachada

    public List<SelectItem> getListaFachada() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaFachada = new ArrayList<SelectItem>();
        listaFachada.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from fachada");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaFachada.add(new SelectItem(rs.getInt("idfachada"), rs.getString("fachada")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaFachada;
    }
//Extraccion de catalogo de lista de tipos remate de fachada

    public List<SelectItem> getListaRemateFachada() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaRemateFachada = new ArrayList<SelectItem>();
        listaRemateFachada.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from remate_fachada");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaRemateFachada.add(new SelectItem(rs.getInt("idremate_fachada"), rs.getString("nombrerematefachada")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaRemateFachada;
    }
//Extraccion de catalogo de lista de tipos de ingreso

    public List<SelectItem> getListaTipoIngreso() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaTipoIngreso = new ArrayList<SelectItem>();
        listaTipoIngreso.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from ingreso");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaTipoIngreso.add(new SelectItem(rs.getInt("idingreso"), rs.getString("nombreingreso")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaTipoIngreso;
    }
//Extraccion de catalogo de lista de tipos de rotulo

    public List<SelectItem> getListaRotulo() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaRotulo = new ArrayList<SelectItem>();
        listaRotulo.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from rotulo");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaRotulo.add(new SelectItem(rs.getInt("idrotulo"), rs.getString("nombrerotulo")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaRotulo;
    }
//Extraccion de catalogo de lista de tipos de conceptos

    public List<SelectItem> getListaConcepto(String expediente) {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaConcepto = new ArrayList<SelectItem>();
        listaConcepto.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("SELECT idconcepto, concepto FROM concepto WHERE idconcepto NOT IN (SELECT idconcepto FROM glosario WHERE idexpediente = ?);");
            ps.setString(1, expediente);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaConcepto.add(new SelectItem(rs.getInt("idconcepto"), rs.getString("concepto")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaConcepto;
    }
    //Extraccion de catalogo de lista de tipos estado expediente

    public List<SelectItem> getListaEstadoExpediente() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaEstados = new ArrayList<SelectItem>();
        listaEstados.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from estado_expediente");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaEstados.add(new SelectItem(rs.getInt("idestado_expediente"), rs.getString("nombreestadoexp")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaEstados;
    }
    //Extraccion de catalogo de lista de tipos estados de conservacion

    public List<SelectItem> getListaEstadoConservacion() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaConservacion = new ArrayList<SelectItem>();
        listaConservacion.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from estado_conserva");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaConservacion.add(new SelectItem(rs.getInt("idestado_conserva"), rs.getString("nombreestadoconse")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaConservacion;
    }

    public List<SelectItem> getListaGradoAlteracion() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaGrado = new ArrayList<SelectItem>();
        listaGrado.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from grado_altera");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaGrado.add(new SelectItem(rs.getInt("idgrado_altera"), rs.getString("nombregradaltera")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaGrado;
    }
    //Lista de materiales

    public List<SelectItem> getListaMaterialElemento(String datoBuscar) {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaMaterial = new ArrayList<SelectItem>();
        listaMaterial.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("select * from catal_elemento where (idcatal_elemento like ?) and (length(idcatal_elemento) = 6)");
            ps.setString(1, datoBuscar);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaMaterial.add(new SelectItem(rs.getString("idcatal_elemento"), rs.getString("nombreelemento")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaMaterial;
    }

    public List<SelectItem> getListaDanioElemento(String datoBuscar) {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaDanio = new ArrayList<SelectItem>();
        listaDanio.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("SELECT DISTINCT ON (catal_danio.nombredanio) catal_danio.idcatal_danio, catal_danio.nombredanio FROM catal_danio, danio_elemento WHERE catal_danio.idcatal_danio = danio_elemento.idcatal_danio AND danio_elemento.idcatal_elemento LIKE ?");
            ps.setString(1, datoBuscar);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaDanio.add(new SelectItem(rs.getString("idcatal_danio"), rs.getString("nombredanio")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaDanio;
    }

    public List<SelectItem> getListaNombres(String datoBuscar, String idExpediente) {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> listaNombre = new ArrayList<SelectItem>();
        listaNombre.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            PreparedStatement ps = con.prepareStatement("SELECT catal_elemento.nombreelemento, catal_danio.nombredanio FROM danioelemento_espacio, catal_danio, catal_elemento WHERE catal_danio.idcatal_danio = danioelemento_espacio.idcatal_danio AND catal_elemento.idcatal_elemento = danioelemento_espacio.idcatal_elemento AND danioelemento_espacio.idcatal_elemento like ? AND danioelemento_espacio.idexpediente = ?");
            ps.setString(1, datoBuscar);
            ps.setString(2, idExpediente);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                listaNombre.add(new SelectItem(rs.getString("nombreelemento"), rs.getString("nombredanio")));
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return listaNombre;
    }

    //lista de los usuario activos
    public List<SelectItem> getListaUsuarios() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> usuario = new ArrayList<SelectItem>();
        usuario.add(new SelectItem(0, "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select idusuario, nombreusuario from usuario where estadousuario = true");
            while (rs.next()) {
                usuario.add(new SelectItem(rs.getInt("idusuario"), rs.getString("nombreusuario")));
            }
            rs.close();
            st.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return usuario;
    }

    //lista de los usuario Inactivos
    public List<SelectItem> getListaUsuariosInactivos() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> usuario = new ArrayList<SelectItem>();
        usuario.add(new SelectItem(0, "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select idusuario, nombreusuario from usuario where estadousuario = false");
            while (rs.next()) {
                usuario.add(new SelectItem(rs.getInt("idusuario"), rs.getString("nombreusuario")));
            }
            rs.close();
            st.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return usuario;
    }

    //lista de los perfiles
    public List<SelectItem> getListaPerfiles() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> perfil = new ArrayList<SelectItem>();
        perfil.add(new SelectItem(0, "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from perfil");
            while (rs.next()) {
                perfil.add(new SelectItem(rs.getInt("idperfil"), rs.getString("nombreperfil")));
            }
            rs.close();
            st.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return perfil;
    }

    public List<SelectItem> getListaTecnicos() {
        ConexionServidor myConexion = new ConexionServidor();
        List<SelectItem> perfil = new ArrayList<SelectItem>();
        perfil.add(new SelectItem("0", "-seleccione uno-"));
        try {
            Connection con = myConexion.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("SELECT usuario.idusuario, usuario.nombreusuario FROM usuario, tecnico WHERE usuario.idusuario = tecnico.idusuario;");
            while (rs.next()) {
                perfil.add(new SelectItem(rs.getInt("idusuario"), rs.getString("nombreusuario")));
            }
            rs.close();
            st.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return perfil;
    }
}
